import lua.Lib;
import lib.Ffi;
import lua.Os;
import lib.Base64;

class Main {
	static function main() {
		// var str = string.randStr(16);
		// trace(str);
		// var test:MetaTable = {};
		// test._set = function(k, v) {
		// 	trace(k, v);
		// };
		// test._get = function(k) {
		// 	trace(k);
		// }
		// test.ss = 5;

		// test.dd = 5;
		// trace(test);

		// Ffi.cdef("
		// typedef void (__stdcall *WNDENUMPROC)(int hwnd, intptr_t l);
		// int EnumWindows(WNDENUMPROC func, intptr_t l);
		// ");
		// // var count = 0;
		// // var cb = Ffi._cast("WNDENUMPROC", function(hwnd, l) {
		// // 	io.print(111, hwnd);
		// // });

		// // var enumWindows = Ffi.getDef("EnumWindows");
		// // Ffi.C.enumWindows(function(hwnd, l) {
		// // 	io.print(hwnd);
		// // }, 0);
		// // enumWindows(cb, 0);
		// // cb.free();
		// Main.testsss();
		// trace(test);

		
	}

	static var char = Ffi._new("char[?]", 16);

	public static function randomStr(len:Int = 16):String {
		for (i in 0...len) {
			var _code = "a".code + Math.floor(rand() * ("z".code - "a".code));
			// rand();
			_code = (rand() >= 0.5) ? _code - 32 : _code;
			char[i] = _code;
		}
		return Ffi.string(char);
	}

	static function rand() {
		return (Os.time() * 1000 * 9301 + 49297) % 233280 / (233280.0);
	}

	static function testsss(?f:Dynamic) {}
}
